"""
4. 切片的使用

题目：编写一个Python程序，随机生成20个由大小写字母、数字和下划线组成的字符组，并使用字符串、列表、集合和元组的方法打印出来。
对字符串和列表切片，用两种方式取出4-14位的字符。
提示：
    1. 使用random.randint()函数生成随机整数。
    2. 使用random.choice()函数从字符组中随机选择一个字符。
    3. 字符串切片：str[start:end]，列表切片：list[start:end]。
"""


import random

# 随机生成20个字符（请补充完整代码）
import random
import string

# 生成随机字符组
random_char_groups = []
for _ in range(20):
    char_group = ''.join(random.choice(string.ascii_letters + string.digits + '_') for _ in range(10))
    random_char_groups.append(char_group)

# 字符串形式
str_random_char_groups = " ".join(random_char_groups)
print("字符串形式:", str_random_char_groups)

# 列表形式
list_random_char_groups = list(random_char_groups)
print("列表形式:", list_random_char_groups)

# 集合形式（集合会自动去重）
set_random_char_groups = set(random_char_groups)
print("集合形式:", set_random_char_groups)

# 元组形式
tuple_random_char_groups = tuple(random_char_groups)
print("元组形式:", tuple_random_char_groups)

# 字符串切片（方式一）
str_slice1 = str_random_char_groups[4:15]
print("字符串切片（方式一）:", str_slice1)
# 字符串切片（方式二）
str_slice2 = str_random_char_groups[4:14 + 1]
print("字符串切片（方式二）:", str_slice2)

# 列表切片（方式一）
list_slice1 = list_random_char_groups[4:15]
print("列表切片（方式一）:", list_slice1)
# 列表切片（方式二）
list_slice2 = list_random_char_groups[4:14 + 1]
print("列表切片（方式二）:", list_slice2)

